//#include <iostream>
//#include <string>
//using namespace std;
//
//string s1;
//string s2;
//int ret;
//
//int main()
//{
//    cin >> s1 >> s2;
//    int m = s1.size();
//    int n = s2.size();
//    ret = m;
//
//    for (int i = 0; i <= n - m; i++)
//    {
//        int tmp = 0;
//        for (int j = 0; j < m; j++)
//        {
//            if (s1[j] != s2[i + j])
//                tmp++;
//        }
//        ret = min(ret, tmp);
//    }
//
//    cout << ret << endl;
//    return 0;
//}


//#include <iostream>
//using namespace std;
//
//typedef long long ll;
//int n;
//ll arr[60];
//
//int main()
//{
//    cin >> n;
//    bool flag = true;
//    for (int i = 0; i < n; i++)
//    {
//        cin >> arr[i];
//    }
//
//    ll prev = arr[0];
//    for (int i = 1; i < n; i++)
//    {
//        if (prev != arr[i])
//        {
//            flag = false;
//            break;
//        }
//    }
//
//    if (flag)
//    {
//        cout << "YES" << endl;
//    }
//    else
//    {
//        for (int i = 0; i < n; i++)
//        {
//            if (arr[i] != 1 && arr[i] % 2 != 0)
//            {
//                flag = true;
//                break;
//            }
//        }
//
//        if (flag)
//        {
//            cout << "NO" << endl;
//        }
//        else
//        {
//            cout << "YES" << endl;
//        }
//    }
//
//
//    return 0;
//}
//
//#include <iostream>
//using namespace std;
//
//int n;
//int arr[51];
//int b;
//
//int fun()
//{
//    for (int i = 0; i < n; i++)
//    {
//        if (b % arr[i])
//            return false;
//        int x = b / arr[i];
//        if (x & (x - 1))
//            return false;
//    }
//    return true;
//}
//
//int main()
//{
//    cin >> n;
//    for (int i = 0; i < n; i++)
//    {
//        cin >> arr[i];
//        b = max(b, arr[i]);
//    }
//
//    if (fun())
//    {
//        cout << "YES" << endl;
//    }
//    else
//    {
//        cout << "NO" << endl;
//    }
//
//    return 0;
//}

//#include <iostream>
//using namespace std;
//
//int V;
//int n;
//int arr[40];
//int dp[40];
//
//int main()
//{
//    cin >> V >> n;
//    for (int i = 1; i <= n; i++)
//    {
//        cin >> arr[i];
//    }
//    dp[0] = V;
//    for (int i = 1; i <= n; i++)
//    {
//        dp[i] = dp[i - 1];
//        if (dp[i - 1] >= arr[i])
//        {
//            dp[i] = min(dp[i], dp[i - 1] - arr[i]);
//        }
//    }
//    cout << dp[n] << endl;
//
//    return 0;
//}

//#include <iostream>
//using namespace std;
//
//const int N = 2e4 + 10;
//int V;
//int n;
//int arr[32];
//int dp[N][N];
//
//int main()
//{
//    cin >> V >> n;
//
//    for (int i = 1; i <= n; i++)
//        cin >> arr[i];
//
//    for (int i = 1; i <= n; i++)
//    {
//        for (int j = 0; j <= V; j++)
//        {
//            dp[i][j] = dp[i - 1][j];
//            if (j >= arr[i])
//            {
//                dp[i][j] = max(dp[i][j], dp[i - 1][j - arr[i]] + arr[i]);
//            }
//        }
//    }
//
//    cout << V - dp[n][V] << endl;
//
//    return 0;
//}

#include <iostream>
using namespace std;

const int N = 2e4 + 10;
int V;
int n;
int arr[32];
int dp[N];

int main()
{
    cin >> V >> n;

    for (int i = 1; i <= n; i++)
        cin >> arr[i];

    for (int i = 1; i <= n; i++)
    {
        for (int j = V; j >= arr[i]; j--)
        {
            dp[j] = max(dp[j], dp[j - arr[i]] + arr[i]);
        }
    }

    cout << V - dp[V] << endl;

    return 0;
}